home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / APPLICAT / C050.ZIP / SFSSRC.ZIP / SFS.SRC / AS / AS.H < prev   
C/C++ Source or Header  |  1991-11-04  |  5KB  |  109 lines

  1. /***************************************************************
  2.  
  3.     as.h        General header file
  4.             for astronomy (as) subsystem
  5.  
  6.             Copyright (c) 1991, Ted A. Campbell
  7.  
  8.             Bywater Software
  9.             P. O. Box 4023 
  10.             Duke Station 
  11.             Durham, NC  27706
  12.  
  13.             email: tcamp@hercules.acpub.duke.edu
  14.  
  15.     Copyright and Permissions Information:
  16.  
  17.     All U.S. and international copyrights are claimed by the
  18.     author. The author grants permission to use this code
  19.     and software based on it under the following conditions:
  20.     (a) in general, the code and software based upon it may be 
  21.     used by individuals and by non-profit organizations; (b) it
  22.     may also be utilized by governmental agencies in any country,
  23.     with the exception of military agencies; (c) the code and/or
  24.     software based upon it may not be sold for a profit without
  25.     an explicit and specific permission from the author, except
  26.     that a minimal fee may be charged for media on which it is
  27.     copied, and for copying and handling; (d) the code must be 
  28.     distributed in the form in which it has been released by the
  29.     author; and (e) the code and software based upon it may not 
  30.     be used for illegal activities. 
  31.  
  32. ***************************************************************/
  33.  
  34. #define RAD_DEG         5.729577951e1   /* Convert radians to degrees   */
  35. #define DEG_RAD         1.745329252e-2  /* Convert degrees to radians   */
  36. #define PI              3.141592654     /* Value of PI                  */
  37. #define UGC             (6.6631110e-23) /* Universal Gravitational Constant */
  38. #define ELEPOCH         315532800       /* Epoch for calculating elapsed
  39.                        time, = 1980/01/01 00:00:00    */
  40.  
  41. #define    SPJ_NEARSIDE    0    /* near side only of spj calculations */
  42. #define    SPJ_FARSIDE    1    /* far side only of spj calculations */
  43. #define SPJ_ALLSIDES    2    /* calculate (show) near and far sides */
  44.  
  45. /* Minimum and Maximum Values for Orbital Elements */
  46.  
  47. #define OR_RAD_MIN      0       /* radius cannot be < 0 km */
  48. #define OR_SID_MIN      0       /* sidereal day cannot be < 0 seconds */
  49. #define OR_MAS_MIN      0.0     /* mass cannot be < 0.0 grams */
  50. #define OR_INC_MIN      -180.0  /* inclination cannot be < -180.0 degrees */
  51. #define OR_INC_MAX      180.0   /* inclination cannot be > 180.0 degrees */
  52. #define OR_LAN_MIN      -180.0  /* longitude of asc. node cannot be < -180.0 degrees */
  53. #define OR_LAN_MAX      180.0   /* longitude of asc. node cannot be > 180.0 degrees */
  54. #define OR_ARP_MIN      -180.0  /* argument of perigee cannot be < -180.0 degrees */
  55. #define OR_ARP_MAX      180.0   /* argument of perigee cannot be > 180.0 degrees */
  56. #define OR_PER_MIN      0.0     /* period cannot be < 0.0 seconds */
  57. #define OR_ECC_MIN      0.0     /* eccentricity cannot be < 0.0 */
  58. #define OR_ECC_MAX      1.0     /* eccentricity cannot be > 1.0 */
  59.  
  60. struct as_focus
  61.    {
  62.    double       radius;         /* radius of orbital focus in kilometers */
  63.    double       sid_day;        /* sidereal period of orbital focus in seconds */
  64.    double       mass;           /* mass of orbital focus in kilograms */
  65.    char         *name;          /* pointer to name of orbital focus */
  66.    char         *adjective;     /* pointer to adjective for orbital focus */
  67.    char         *fdfile;        /* pointer to fd filename */
  68.    };
  69.  
  70. struct as_orbit
  71.    {
  72.    struct   as_focus   *focus; /* orbital focus */
  73.    double   apoapsis;          /* apoapsis of orbit in kilometers  */
  74.    double   periapsis;         /* periapsis of orbit in kilometers */
  75.    double   semimajor;         /* Semimajor axis in kilometers */
  76.    double   semiminor;         /* Semiminor axis in kilometers */
  77.    double   dist;              /* Focus to orbit distance in kilometers */
  78.    double   inclination;       /* Inclination in degrees */
  79.    double   eccentricity;      /* Eccentricity ( 0 < e <= 1 ) */
  80.    double   arg_per;           /* Argument of the periapsis in degrees */
  81.    double   lon_an;            /* Longitude of Ascending Node in degrees */
  82.    double   lif;               /* Longitude increment factor */
  83.    double   period;            /* Period of orbit in seconds */
  84.    };
  85.  
  86. struct spj_pt {
  87.    int    code;
  88.    double latitude;
  89.    double longitude;
  90.    double radius;
  91.    double x;
  92.    double y;
  93.    int    side;
  94.    char   *name;
  95.    struct spj_pt *next;
  96.    };
  97.  
  98. extern double   spj_meridian();
  99. extern double   spj_angrad();
  100. extern double   spj_degfix();
  101.  
  102. extern  char *as_fgets();
  103.  
  104. extern  double  as_lfix();
  105. extern    double    vpt_sin();
  106. extern    double    vpt_cos();
  107. extern    double    vpt_tan();
  108. extern  int    vpt_level;
  109.